home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 081-090 / amok90 / filedate / filedate.mod < prev    next >
Text File  |  1993-11-04  |  3KB  |  85 lines

  1. (*------------------------------------------
  2.  
  3.   :Program.     FileDate
  4.   :Author.      Albert Weinert [awn]
  5.   :Address.     Krähenweg 21, D-5000 Köln 30
  6.   :Version.     V1.0
  7.   :Date.        28-Mar-1993
  8.   :Copyright.   Albert Weinert 1993
  9.   :Language.    Oberon-2
  10.   :Translator.  Amiga Oberon 3.00d
  11.   :Contents.    Vergleicht die Erstellungs Daten zweier Dateien
  12.   :Imports.     <Importiertes, Name/ShortCut des Autors>
  13.   :Remarks.     Wenn das File FILE neuer wie das File CHECK dann wird  RC=0
  14.   :Remarks.     zurückgegeben. Wenn das File CHECK nicht vorhanden ist dann wird
  15.   :Remarks.     auch RC=0 zurückgegeben. Wenn allerdings das File FILE nicht
  16.   :Remarks.     vorhanden ist, dann wird RC=20 zurückgeben. Wenn das File FILE
  17.   :Remarks.     älter wie das File CHECK ist dann wird RC=5 zurückgegeben.
  18.   :Bugs.        <Bekannte Fehler>
  19.   :Usage.       FileDate FILE/A,CHECK/A
  20.   :History.     V0.0   [awn] 28-Mar-1993 : Erstellt
  21.   :History.     V1.0   [awn] 28-Mar-1993 : Funktioniert
  22.  
  23. --------------------------------------------*)
  24. MODULE  FileDate;
  25. (* $OddChk- *)
  26. IMPORT  FileDateVersion,
  27.         Exec,
  28.         Dos;
  29.  
  30. VAR file : Dos.FileInfoBlockPtr;
  31.     date1,date2: Dos.Date;
  32.     RDArgs : Dos.RDArgsPtr;
  33.     args : ARRAY 2 OF Exec.STRPTR;
  34.     lock : Dos.FileLockPtr;
  35.     time1,time2: LONGINT;
  36.  
  37. PROCEDURE DateToInt(date:Dos.Date; VAR time:LONGINT);
  38.   BEGIN
  39.     time:=date.tick DIV Dos.ticksPerSecond;
  40.     INC(time,date.minute * 60);
  41.     INC(time,date.days * 24 * 60 * 60);
  42.   END DateToInt;
  43.  
  44. BEGIN
  45.   RDArgs:=Dos.ReadArgs("FILE/A,CHECK/A",args,NIL);
  46.   IF RDArgs # NIL THEN
  47.     file:=Dos.AllocDosObjectTags(Dos.fib,NIL);
  48.     IF file # NIL THEN
  49.       lock:=Dos.Lock(args[0]^,Dos.accessRead);
  50.       IF lock # NIL THEN
  51.         IF Dos.Examine(lock,file^) THEN
  52.           date1:=file.date;
  53.           Dos.UnLock(lock);
  54.           lock:=Dos.Lock(args[1]^,Dos.accessRead);
  55.           IF lock # NIL THEN
  56.             IF Dos.Examine(lock,file^) THEN
  57.               date2:=file.date;
  58.               Dos.UnLock(lock);
  59.               lock:=NIL;
  60.               DateToInt(date1,time1);
  61.               DateToInt(date2,time2);
  62.               IF time1 < time2 THEN
  63.                 HALT(5);
  64.               END;
  65.             ELSE
  66.               HALT(0);
  67.             END;
  68.           ELSE
  69.             Dos.PrintF("Neuer\n");
  70.             HALT(0);
  71.           END;
  72.         ELSE
  73.           HALT(20);
  74.         END;
  75.       ELSE
  76.         HALT(20);
  77.       END;
  78.     END (* IF file # NIL THEN *);
  79.   END (* IF RDArgs # NIL THEN *);
  80. CLOSE
  81.   IF lock # NIL THEN Dos.UnLock(lock) END;
  82.   IF file # NIL THEN Dos.FreeDosObject(Dos.fib,file) END;
  83.   IF RDArgs # NIL THEN Dos.FreeArgs(RDArgs) END;
  84. END FileDate.
  85.